Sequence Diagrams (also known as sequence charts, time sequence diagrams/charts, message sequence diagrams/charts, railroad diagrams/charts, or ladder diagrams/charts) are commonly used to provide a graphical representation of a flow of an application. More specifically, sequence diagrams typically provide a graphical representation of a series of transactions, referred to as “messages,” between two or more entities, referred to as “actors.” In sequence diagrams, time is typically represented by vertical progression down the page. Each actor is typically represented in sequence diagrams by a vertical line (or column). Messages are typically represented by horizontal lines, which are usually labeled and usually end in an arrowhead indicating the direction of communication, between the vertical lines of the actors involved in the exchange. Other decorations are sometimes included in a sequence diagram, such as transaction item numbers or other relationships between the transactions, such as timeouts.
The flow of many types of applications can be represented by sequence diagrams, including without limitation such applications as communication protocols, computer-executable software, assembly line or other manufacturing processes. Indeed, sequence diagrams can be used to represent the flow of message exchanges between actors for any application, such as the flow of messages exchanged between a fruit salesman and a customer desiring to purchase fruit from the salesman. Sequence diagrams can be used to clearly represent the message exchange (or “flow”) of an application instead of or in addition to textual description of such message exchange. For instance, in many cases, such applications as communication protocols can be more quickly understood by review of a sequence diagram than by review of a textual description of the application. As with the adage that a picture is worth a thousand words, sequence diagrams greatly aid in conveying the message exchange of a given application.
Accordingly, sequence diagrams are commonly used in specifications, designs, and other documentation to document implementations and as representations of predicted or measured system behavior. In the telecommunications field, for example, sequence diagrams are widely used to document the required, expected, or actual protocol message exchanges.
While sequence diagrams are of great benefit, it is often burdensome to create and maintain them. Traditionally, sequence diagrams have been manually created using basic bitmap editors (e.g., Microsoft Paint), more sophisticated diagramming tools (e.g., Microsoft Visio), or sometimes dedicated CASE tools (e.g., Rational Rose). Creating sequence diagrams in these manners requires that both the original author and the maintainer have access to appropriately licensed versions of the compatible tools. Further, the sequence diagram creator is required to make decisions about style and layout, although some tools provide assistance in these areas. This manual approach consumes a lot of time and labor and discourages the inclusion of sequence diagrams in documentation due to the high cost of creating and maintaining them.
More recently, automatic diagram generation tools have been developed that can generate sequence diagrams from an input textual file that describes the transaction sequences of an application. Thus, such automatic diagram generation tools alleviate the requirement of a user manually creating sequence diagrams. Automatic diagram generation tools available in the prior art include the following: EventStudio 2.5 available from EventHelix.com (see http://www.eventhelix.com/EventStudio/), Callflow Sequence Diagram Generator available from SourceForge.net (see http://sourceforge.net/projects/callflow), the Sequence Diagram Tool provided in the WebSphere Studio Application Developer available from International Business Machines (IBM), and J2u available from NASRA (see http://www.nasra.fr/).
Prior automatic diagram generation tools typically require use of a proprietary language for defining a textual description in a source file. Thus, a user may be required to learn a proprietary language in order to generate the proper textual description to be used by the automatic diagram generation tool.
Further, some automatic diagram generation tools are not application generic. Rather, certain automatic diagram generation tools are restricted for use in generating sequence diagrams for only specific types of applications, and thus lack the flexibility to generate a sequence diagram for any desired type of application. For instance, the Sequence Diagram Tool provided in the WebSphere Studio Application Developer is capable of receiving Java source code as a source file, and is operable to generate a sequence diagram representing the flow of the received Java source code. Thus, while this tool does not require a user to learn a proprietary language in order to generate a source file (but instead the Java source code can be input as the source file), it is application-specific in that it is capable of only generating sequence diagrams for the input Java source code. Thus, for instance, this tool is not able to receive a textual source file describing, for example, the message exchange between a customer and a fruit salesman and generate a sequence diagram for that application, but is instead limited to generating a sequence diagram representing the flow of the Java source code input to it. Thus, certain sequence diagram generation tools are not general purpose sequence diagram generators, but rather are focused on specific applications or specific tasks, such as reverse-engineering existing source code or automatically documenting software runtime behavior from runtime traces.
Additionally, automatic sequence diagram generation tools of the prior art generally do not allow command-line operation and hence cannot be integrated into an end-user's document publishing automation process. Thus, there is generally no efficient way for a user to create a group of diagrams utilizing prior automatic sequence diagram generators. Rather, a user is generally required to sit in front of the computer and enter information (e.g., a source file) to generate one diagram at a time.